#ifndef PROPERTYOBFUSCATOR_H
#define PROPERTYOBFUSCATOR_H

#include <QString>
#include <QStringList>
#include <QMap>
#include <QRegularExpression>

class WhitelistManager;

class PropertyObfuscator {
public:
    PropertyObfuscator();
    ~PropertyObfuscator();
    
    // 生成属性名混淆映射
    QMap<QString, QString> generateMappings(const QStringList &files, WhitelistManager *whitelist);
    
    // 设置混淆参数
    void setPrefix(const QString &prefix) { m_prefix = prefix; }
    void setSuffix(const QString &suffix) { m_suffix = suffix; }
    
private:
    QString m_prefix;
    QString m_suffix;
    
    // 从文件中提取属性名
    QStringList extractPropertyNames(const QString &filePath);
    
    // 生成混淆后的属性名
    QString generateObfuscatedName(const QString &originalName);
    
    // 检查是否应该混淆该属性
    bool shouldObfuscate(const QString &propertyName, WhitelistManager *whitelist);
    
    // 正则表达式
    QRegularExpression m_objcPropertyRegex;
    QRegularExpression m_swiftPropertyRegex;
};

#endif // PROPERTYOBFUSCATOR_H